home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Drag.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  14.6 KB  |  372 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Drag.mod
  3.  
  4.      Contains:    Drag and Drop Interfaces.
  5.  
  6.      Version:    Technology:    Macintosh Drag and Drop 1.1
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE Drag;
  23.  
  24. IMPORT SYSTEM, Types, Memory, Quickdraw, Files, Events, AppleEvents;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. CONST
  31. (* Flavor Flags *)
  32.     flavorSenderOnly*            = $00000001;                    (* flavor is available to sender only *)
  33.     flavorSenderTranslated*        = $00000002;                    (* flavor is translated by sender *)
  34.     flavorNotSaved*                = $00000004;                    (* flavor should not be saved *)
  35.     flavorSystemTranslated*        = $00000100;                    (* flavor is translated by system *)
  36.  
  37.     
  38. TYPE
  39.     FlavorFlags* = LONGINT;
  40.  
  41.  
  42. CONST
  43. (* Drag Attributes *)
  44.     dragHasLeftSenderWindow*        = $00000001;                    (* drag has left the source window since TrackDrag *)
  45.     dragInsideSenderApplication*    = $00000002;                    (* drag is occurring within the sender application *)
  46.     dragInsideSenderWindow*        = $00000004;                    (* drag is occurring within the sender window *)
  47.  
  48.     
  49. TYPE
  50.     DragAttributes* = LONGINT;
  51.  
  52.  
  53. CONST
  54. (* Special Flavor Types *)
  55.     flavorTypeHFS*                = LONG("hfs ");                        (* flavor type for HFS data *)
  56.     flavorTypePromiseHFS*        = LONG("phfs");                        (* flavor type for promised HFS data *)
  57.     flavorTypeDirectory*            = LONG("diry");
  58.  
  59. (* Drag Tracking Handler Messages *)
  60.     dragTrackingEnterHandler*    = 1;                            (* drag has entered handler *)
  61.     dragTrackingEnterWindow*        = 2;                            (* drag has entered window *)
  62.     dragTrackingInWindow*        = 3;                            (* drag is moving within window *)
  63.     dragTrackingLeaveWindow*        = 4;                            (* drag has exited window *)
  64.     dragTrackingLeaveHandler*    = 5;                            (* drag has exited handler *)
  65.  
  66.     
  67. TYPE
  68.     DragTrackingMessage* = INTEGER;
  69.  
  70.  
  71. CONST
  72. (* Drag Drawing Procedure Messages* *)
  73.     dragRegionBegin*                = 1;                            (* initialize drawing *)
  74.     dragRegionDraw*                = 2;                            (* draw drag feedback *)
  75.     dragRegionHide*                = 3;                            (* hide drag feedback *)
  76.     dragRegionIdle*                = 4;                            (* drag feedback idle time *)
  77.     dragRegionEnd*                = 5;                            (* end of drawing *)
  78.  
  79.     
  80. TYPE
  81.     DragRegionMessage* = INTEGER;
  82.  
  83.  
  84. CONST
  85. (* Zoom Acceleration *)
  86.     zoomNoAcceleration*            = 0;                            (* use linear interpolation *)
  87.     zoomAccelerate*                = 1;                            (* ramp up step size *)
  88.     zoomDecelerate*                = 2;                            (* ramp down step size *)
  89.  
  90.     
  91. TYPE
  92.     ZoomAcceleration* = INTEGER;
  93.  
  94. (* Drag Manager Data Types *)
  95.     DragReference* = LONGINT;
  96.  
  97.     ItemReference* = LONGINT;
  98.  
  99.     FlavorType* = Types.ResType;
  100.  
  101. (* HFS Flavors *)
  102.     HFSFlavor* = RECORD
  103.         fileType*:                Types.OSType;                                    (* file type *)
  104.         fileCreator*:            Types.OSType;                                    (* file creator *)
  105.         fdFlags*:                INTEGER;                                (* Finder flags *)
  106.         fileSpec*:                Files.FSSpec;                                    (* file system specification *)
  107.     END;
  108.  
  109.     PromiseHFSFlavor* = RECORD
  110.         fileType*:                Types.OSType;                                    (* file type *)
  111.         fileCreator*:            Types.OSType;                                    (* file creator *)
  112.         fdFlags*:                INTEGER;                                (* Finder flags *)
  113.         promisedFlavor*:            FlavorType;                                (* promised flavor containing an Files.FSSpec *)
  114.     END;
  115.  
  116. (* Application-Defined Drag Handler Routines *)
  117.     DragTrackingHandlerProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (message: DragTrackingMessage; theWindow: Quickdraw.WindowPtr; handlerRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference): Types.OSErr;
  118.     DragTrackingHandlerUPP* = Types.UniversalProcPtr;
  119.  
  120. CONST
  121.     uppDragTrackingHandlerProcInfo* = $00003FA0; (* PROCEDURE (2 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  122.  
  123. PROCEDURE NewDragTrackingHandlerProc*(userRoutine: DragTrackingHandlerProcPtr): DragTrackingHandlerUPP;
  124.     (*$IF NOT GENERATINGCFM *)
  125.     INLINE PASCAL $2E9F;
  126.     (*$END*)
  127.  
  128. PROCEDURE CallDragTrackingHandlerProc*(message: DragTrackingMessage; theWindow: Quickdraw.WindowPtr; handlerRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference; userRoutine: DragTrackingHandlerUPP): Types.OSErr;
  129.     (*$IF NOT GENERATINGCFM*)
  130.     INLINE PASCAL $205F, $4E90;
  131.     (*$END*)
  132.     
  133. TYPE
  134.     DragTrackingHandler* = DragTrackingHandlerUPP;
  135.  
  136.     DragReceiveHandlerProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (theWindow: Quickdraw.WindowPtr; handlerRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference): Types.OSErr;
  137.     DragReceiveHandlerUPP* = Types.UniversalProcPtr;
  138.  
  139. CONST
  140.     uppDragReceiveHandlerProcInfo* = $00000FE0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  141.  
  142. PROCEDURE NewDragReceiveHandlerProc*(userRoutine: DragReceiveHandlerProcPtr): DragReceiveHandlerUPP;
  143.     (*$IF NOT GENERATINGCFM *)
  144.     INLINE PASCAL $2E9F;
  145.     (*$END*)
  146.  
  147. PROCEDURE CallDragReceiveHandlerProc*(theWindow: Quickdraw.WindowPtr; handlerRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference; userRoutine: DragReceiveHandlerUPP): Types.OSErr;
  148.     (*$IF NOT GENERATINGCFM*)
  149.     INLINE PASCAL $205F, $4E90;
  150.     (*$END*)
  151.     
  152. TYPE
  153.     DragReceiveHandler* = DragReceiveHandlerUPP;
  154.  
  155. (* Application-Defined Routines *)
  156.     DragSendDataProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (theType: FlavorType; dragSendRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theItemRef: ItemReference; theDragRef: DragReference): Types.OSErr;
  157.     DragSendDataUPP* = Types.UniversalProcPtr;
  158.  
  159. CONST
  160.     uppDragSendDataProcInfo* = $00003FE0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  161.  
  162. PROCEDURE NewDragSendDataProc*(userRoutine: DragSendDataProcPtr): DragSendDataUPP;
  163.     (*$IF NOT GENERATINGCFM *)
  164.     INLINE PASCAL $2E9F;
  165.     (*$END*)
  166.  
  167. PROCEDURE CallDragSendDataProc*(theType: FlavorType; dragSendRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theItemRef: ItemReference; theDragRef: DragReference; userRoutine: DragSendDataUPP): Types.OSErr;
  168.     (*$IF NOT GENERATINGCFM*)
  169.     INLINE PASCAL $205F, $4E90;
  170.     (*$END*)
  171.     
  172. TYPE
  173.     DragSendDataProc* = DragSendDataUPP;
  174.  
  175.     DragInputProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR mouse: Types.Point; VAR modifiers: INTEGER; dragInputRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference): Types.OSErr;
  176.     DragInputUPP* = Types.UniversalProcPtr;
  177.  
  178. CONST
  179.     uppDragInputProcInfo* = $00003FE0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  180.  
  181. PROCEDURE NewDragInputProc*(userRoutine: DragInputProcPtr): DragInputUPP;
  182.     (*$IF NOT GENERATINGCFM *)
  183.     INLINE PASCAL $2E9F;
  184.     (*$END*)
  185.  
  186. PROCEDURE CallDragInputProc*(VAR mouse: Types.Point; VAR modifiers: INTEGER; dragInputRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference; userRoutine: DragInputUPP): Types.OSErr;
  187.     (*$IF NOT GENERATINGCFM*)
  188.     INLINE PASCAL $205F, $4E90;
  189.     (*$END*)
  190.     
  191. TYPE
  192.     DragInputProc* = DragInputUPP;
  193.  
  194.     DragDrawingProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (message: DragRegionMessage; showRegion: Quickdraw.RgnHandle; showOrigin: Types.Point; hideRegion: Quickdraw.RgnHandle; hideOrigin: Types.Point; dragDrawingRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference): Types.OSErr;
  195.     DragDrawingUPP* = Types.UniversalProcPtr;
  196.  
  197. CONST
  198.     uppDragDrawingProcInfo* = $000FFFA0; (* PROCEDURE (2 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  199.  
  200. PROCEDURE NewDragDrawingProc*(userRoutine: DragDrawingProcPtr): DragDrawingUPP;
  201.     (*$IF NOT GENERATINGCFM *)
  202.     INLINE PASCAL $2E9F;
  203.     (*$END*)
  204.  
  205. PROCEDURE CallDragDrawingProc*(message: DragRegionMessage; showRegion: Quickdraw.RgnHandle; showOrigin: Types.Point; hideRegion: Quickdraw.RgnHandle; hideOrigin: Types.Point; dragDrawingRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr; theDragRef: DragReference; userRoutine: DragDrawingUPP): Types.OSErr;
  206.     (*$IF NOT GENERATINGCFM*)
  207.     INLINE PASCAL $205F, $4E90;
  208.     (*$END*)
  209.     
  210. TYPE
  211.     DragDrawingProc* = DragDrawingUPP;
  212.  
  213. (* Drag Manager Routines *)
  214. (* Installing and Removing Drag Handlers *)
  215.  
  216. PROCEDURE InstallTrackingHandler*(trackingHandler: DragTrackingHandler; theWindow: Quickdraw.WindowPtr; handlerRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  217.     (*$IF NOT GENERATINGCFM*)
  218.     INLINE PASCAL $7001, $ABED;
  219.     (*$END*)
  220. PROCEDURE InstallReceiveHandler*(receiveHandler: DragReceiveHandler; theWindow: Quickdraw.WindowPtr; handlerRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  221.     (*$IF NOT GENERATINGCFM*)
  222.     INLINE PASCAL $7002, $ABED;
  223.     (*$END*)
  224. PROCEDURE RemoveTrackingHandler*(trackingHandler: DragTrackingHandler; theWindow: Quickdraw.WindowPtr): Types.OSErr;
  225.     (*$IF NOT GENERATINGCFM*)
  226.     INLINE PASCAL $7003, $ABED;
  227.     (*$END*)
  228. PROCEDURE RemoveReceiveHandler*(receiveHandler: DragReceiveHandler; theWindow: Quickdraw.WindowPtr): Types.OSErr;
  229.     (*$IF NOT GENERATINGCFM*)
  230.     INLINE PASCAL $7004, $ABED;
  231.     (*$END*)
  232. (* Creating and Disposing Drag References *)
  233. PROCEDURE NewDrag*(VAR theDragRef: DragReference): Types.OSErr;
  234.     (*$IF NOT GENERATINGCFM*)
  235.     INLINE PASCAL $7005, $ABED;
  236.     (*$END*)
  237. PROCEDURE DisposeDrag*(theDragRef: DragReference): Types.OSErr;
  238.     (*$IF NOT GENERATINGCFM*)
  239.     INLINE PASCAL $7006, $ABED;
  240.     (*$END*)
  241. (* Adding Drag Item Flavors *)
  242. PROCEDURE AddDragItemFlavor*(theDragRef: DragReference; theItemRef: ItemReference; theType: FlavorType; dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; dataSize: Memory.Size; theFlags: FlavorFlags): Types.OSErr;
  243.     (*$IF NOT GENERATINGCFM*)
  244.     INLINE PASCAL $7007, $ABED;
  245.     (*$END*)
  246. PROCEDURE SetDragItemFlavorData*(theDragRef: DragReference; theItemRef: ItemReference; theType: FlavorType; dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; dataSize: Memory.Size; dataOffset: LONGINT): Types.OSErr;
  247.     (*$IF NOT GENERATINGCFM*)
  248.     INLINE PASCAL $7009, $ABED;
  249.     (*$END*)
  250. (* Providing Drag Callback Procedures *)
  251. PROCEDURE SetDragSendProc*(theDragRef: DragReference; sendProc: DragSendDataProc; dragSendRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  252.     (*$IF NOT GENERATINGCFM*)
  253.     INLINE PASCAL $700A, $ABED;
  254.     (*$END*)
  255. PROCEDURE SetDragInputProc*(theDragRef: DragReference; inputProc: DragInputProc; dragInputRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  256.     (*$IF NOT GENERATINGCFM*)
  257.     INLINE PASCAL $700B, $ABED;
  258.     (*$END*)
  259. PROCEDURE SetDragDrawingProc*(theDragRef: DragReference; drawingProc: DragDrawingProc; dragDrawingRefCon: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  260.     (*$IF NOT GENERATINGCFM*)
  261.     INLINE PASCAL $700C, $ABED;
  262.     (*$END*)
  263. PROCEDURE TrackDrag*(theDragRef: DragReference; (*CONST*)VAR theEvent: Events.EventRecord; theRegion: Quickdraw.RgnHandle): Types.OSErr;
  264.     (*$IF NOT GENERATINGCFM*)
  265.     INLINE PASCAL $700D, $ABED;
  266.     (*$END*)
  267. (* Getting Drag Item Information *)
  268. PROCEDURE CountDragItems*(theDragRef: DragReference; VAR numItems: INTEGER): Types.OSErr;
  269.     (*$IF NOT GENERATINGCFM*)
  270.     INLINE PASCAL $700E, $ABED;
  271.     (*$END*)
  272. PROCEDURE GetDragItemReferenceNumber*(theDragRef: DragReference; index: INTEGER; VAR theItemRef: ItemReference): Types.OSErr;
  273.     (*$IF NOT GENERATINGCFM*)
  274.     INLINE PASCAL $700F, $ABED;
  275.     (*$END*)
  276. PROCEDURE CountDragItemFlavors*(theDragRef: DragReference; theItemRef: ItemReference; VAR numFlavors: INTEGER): Types.OSErr;
  277.     (*$IF NOT GENERATINGCFM*)
  278.     INLINE PASCAL $7010, $ABED;
  279.     (*$END*)
  280. PROCEDURE GetFlavorType*(theDragRef: DragReference; theItemRef: ItemReference; index: INTEGER; VAR theType: FlavorType): Types.OSErr;
  281.     (*$IF NOT GENERATINGCFM*)
  282.     INLINE PASCAL $7011, $ABED;
  283.     (*$END*)
  284. PROCEDURE GetFlavorFlags*(theDragRef: DragReference; theItemRef: ItemReference; theType: FlavorType; VAR theFlags: FlavorFlags): Types.OSErr;
  285.     (*$IF NOT GENERATINGCFM*)
  286.     INLINE PASCAL $7012, $ABED;
  287.     (*$END*)
  288. PROCEDURE GetFlavorDataSize*(theDragRef: DragReference; theItemRef: ItemReference; theType: FlavorType; VAR dataSize: Memory.Size): Types.OSErr;
  289.     (*$IF NOT GENERATINGCFM*)
  290.     INLINE PASCAL $7013, $ABED;
  291.     (*$END*)
  292. PROCEDURE GetFlavorData*(theDragRef: DragReference; theItemRef: ItemReference; theType: FlavorType; dataPtr: (*ΔΔUNIVΔΔ*) Types.Ptr; VAR dataSize: Memory.Size; dataOffset: LONGINT): Types.OSErr;
  293.     (*$IF NOT GENERATINGCFM*)
  294.     INLINE PASCAL $7014, $ABED;
  295.     (*$END*)
  296. PROCEDURE GetDragItemBounds*(theDragRef: DragReference; theItemRef: ItemReference; VAR itemBounds: Types.Rect): Types.OSErr;
  297.     (*$IF NOT GENERATINGCFM*)
  298.     INLINE PASCAL $7015, $ABED;
  299.     (*$END*)
  300. PROCEDURE SetDragItemBounds*(theDragRef: DragReference; theItemRef: ItemReference; (*CONST*)VAR itemBounds: Types.Rect): Types.OSErr;
  301.     (*$IF NOT GENERATINGCFM*)
  302.     INLINE PASCAL $7016, $ABED;
  303.     (*$END*)
  304. PROCEDURE GetDropLocation*(theDragRef: DragReference; VAR dropLocation: AppleEvents.AEDesc): Types.OSErr;
  305.     (*$IF NOT GENERATINGCFM*)
  306.     INLINE PASCAL $7017, $ABED;
  307.     (*$END*)
  308. PROCEDURE SetDropLocation*(theDragRef: DragReference; (*CONST*)VAR dropLocation: AppleEvents.AEDesc): Types.OSErr;
  309.     (*$IF NOT GENERATINGCFM*)
  310.     INLINE PASCAL $7018, $ABED;
  311.     (*$END*)
  312. (* Getting Information About a Drag *)
  313. PROCEDURE GetDragAttributes*(theDragRef: DragReference; VAR flags: DragAttributes): Types.OSErr;
  314.     (*$IF NOT GENERATINGCFM*)
  315.     INLINE PASCAL $7019, $ABED;
  316.     (*$END*)
  317. PROCEDURE GetDragMouse*(theDragRef: DragReference; VAR mouse: Types.Point; VAR pinnedMouse: Types.Point): Types.OSErr;
  318.     (*$IF NOT GENERATINGCFM*)
  319.     INLINE PASCAL $701A, $ABED;
  320.     (*$END*)
  321. PROCEDURE SetDragMouse*(theDragRef: DragReference; pinnedMouse: Types.Point): Types.OSErr;
  322.     (*$IF NOT GENERATINGCFM*)
  323.     INLINE PASCAL $701B, $ABED;
  324.     (*$END*)
  325. PROCEDURE GetDragOrigin*(theDragRef: DragReference; VAR initialMouse: Types.Point): Types.OSErr;
  326.     (*$IF NOT GENERATINGCFM*)
  327.     INLINE PASCAL $701C, $ABED;
  328.     (*$END*)
  329. PROCEDURE GetDragModifiers*(theDragRef: DragReference; VAR modifiers: INTEGER; VAR mouseDownModifiers: INTEGER; VAR mouseUpModifiers: INTEGER): Types.OSErr;
  330.     (*$IF NOT GENERATINGCFM*)
  331.     INLINE PASCAL $701D, $ABED;
  332.     (*$END*)
  333. (* Drag Highlighting *)
  334. PROCEDURE ShowDragHilite*(theDragRef: DragReference; hiliteFrame: Quickdraw.RgnHandle; inside: BOOLEAN): Types.OSErr;
  335.     (*$IF NOT GENERATINGCFM*)
  336.     INLINE PASCAL $701E, $ABED;
  337.     (*$END*)
  338. PROCEDURE HideDragHilite*(theDragRef: DragReference): Types.OSErr;
  339.     (*$IF NOT GENERATINGCFM*)
  340.     INLINE PASCAL $701F, $ABED;
  341.     (*$END*)
  342. PROCEDURE DragPreScroll*(theDragRef: DragReference; dH: INTEGER; dV: INTEGER): Types.OSErr;
  343.     (*$IF NOT GENERATINGCFM*)
  344.     INLINE PASCAL $7020, $ABED;
  345.     (*$END*)
  346. PROCEDURE DragPostScroll*(theDragRef: DragReference): Types.OSErr;
  347.     (*$IF NOT GENERATINGCFM*)
  348.     INLINE PASCAL $7021, $ABED;
  349.     (*$END*)
  350. PROCEDURE UpdateDragHilite*(theDragRef: DragReference; updateRgn: Quickdraw.RgnHandle): Types.OSErr;
  351.     (*$IF NOT GENERATINGCFM*)
  352.     INLINE PASCAL $7022, $ABED;
  353.     (*$END*)
  354. (* Drag Manager Utilities *)
  355. PROCEDURE WaitMouseMoved*(initialMouse: Types.Point): BOOLEAN;
  356.     (*$IF NOT GENERATINGCFM*)
  357.     INLINE PASCAL $7023, $ABED;
  358.     (*$END*)
  359. PROCEDURE ZoomRects*((*CONST*)VAR fromRect: Types.Rect; (*CONST*)VAR toRect: Types.Rect; zoomSteps: INTEGER; acceleration: ZoomAcceleration): Types.OSErr;
  360.     (*$IF NOT GENERATINGCFM*)
  361.     INLINE PASCAL $7024, $ABED;
  362.     (*$END*)
  363. PROCEDURE ZoomRegion*(region: Quickdraw.RgnHandle; zoomDistance: Types.Point; zoomSteps: INTEGER; acceleration: ZoomAcceleration): Types.OSErr;
  364.     (*$IF NOT GENERATINGCFM*)
  365.     INLINE PASCAL $7025, $ABED;
  366.     (*$END*)
  367.  
  368. (* $ALIGN RESET*)
  369. (* $POP*)
  370.  
  371.  END Drag.
  372.